package com.guomao.work;

import com.guomao.util.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * 消费者2类，用于从RabbitMQ的工作队列中消费消息
 */
public class Consumer2 {

    // 定义队列名称常量
    static final String QUEUE_NAME = "work_queue";

    /**
     * 主方法，程序入口
     * @param args 命令行参数
     * @throws Exception 可能抛出的异常
     */
    public static void main(String[] args) throws Exception {

        // 获取RabbitMQ连接
        Connection connection = ConnectionUtil.getConnection();

        // 创建通道
        Channel channel = connection.createChannel();

        // 声明队列
        // 参数：队列名、是否持久化、是否独占、是否自动删除、其他参数
        channel.queueDeclare(QUEUE_NAME,true,false,false,null);

        // 创建消费者
        Consumer consumer = new DefaultConsumer(channel){

            /**
             * 重写处理消息的方法
             * @param consumerTag 消费者标签
             * @param envelope 包含消息、交换机、路由键等信息的对象
             * @param properties 消息属性
             * @param body 消息内容
             * @throws IOException 可能抛出的IO异常
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
  
                // 打印接收到的消息内容
                System.out.println("Consumer1 body："+new String(body));
  
            }  
  
        };  
  
        // 开始消费消息
        // 参数：队列名、是否自动确认消息、消费者
        channel.basicConsume(QUEUE_NAME,true,consumer);
  
    }  
  
}